home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 July: Mac OS SDK / Dev.CD Jul 96 SDK / Dev.CD Jul 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / Button / Sources / Actions.h < prev    next >
Encoding:
Text File  |  1996-04-25  |  6.0 KB  |  199 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                Actions.h
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Author:                Jim Lloyd
  7. //
  8. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  9. //
  10. //========================================================================================
  11.  
  12. #ifndef ACTIONS_H
  13. #define ACTIONS_H
  14.  
  15. #ifndef FWRUNTYP_H
  16. #include "FWRunTyp.h"
  17. #endif
  18.  
  19. // ----- Macintosh Includes -----
  20.  
  21. #if defined(FW_BUILD_MAC) && !defined(__OSA__)
  22. #include <OSA.h>
  23. #endif
  24.  
  25. //========================================================================================
  26. //    Forward declarations
  27. //========================================================================================
  28.  
  29. class ODStorageUnit;
  30.  
  31. //========================================================================================
  32. //    class CAction
  33. //========================================================================================
  34.  
  35. class CAction
  36. {
  37. public:
  38.     FW_DECLARE_CLASS
  39.  
  40. //----------------------------------------------------------------------------------------
  41. //    Initialization/Destruction
  42. //
  43. public:    
  44.     CAction();
  45.     virtual ~CAction();
  46.     
  47.     static FW_Boolean IsInStorage(Environment* ev, ODStorageUnit* storage);
  48.     static CAction* CreateFromStorage(Environment* ev, ODStorageUnit* storage);
  49.     static void WriteToStorage(Environment* ev, CAction* action, ODStorageUnit* storage);
  50.  
  51. //----------------------------------------------------------------------------------------
  52. //    Action protocol
  53. //
  54. public:    
  55.     virtual void Internalize(Environment* ev, 
  56.                         ODStorageUnit* storage) = 0;
  57.                         
  58.     virtual void Externalize(Environment* ev, 
  59.                         ODStorageUnit* storage) = 0;
  60.     
  61.     virtual void DoIt() = 0;
  62. };
  63.  
  64. //========================================================================================
  65. //    class CSoundAction
  66. //========================================================================================
  67.  
  68. class CSoundAction : public CAction
  69. {
  70. public:
  71.     FW_DECLARE_CLASS
  72.  
  73. //----------------------------------------------------------------------------------------
  74. //    Initialization/Destruction
  75. //
  76. public:
  77.     CSoundAction(Environment* ev, ODStorageUnit* storage);
  78.     CSoundAction(Environment* ev, FW_CReadableStream& stream);
  79.     virtual ~CSoundAction();
  80.     
  81.     static FW_Boolean IsInStorage(Environment* ev, ODStorageUnit* storage);
  82.     
  83. //----------------------------------------------------------------------------------------
  84. //    Archiving
  85. //
  86. public:
  87.     static void* Read(FW_CReadableStream& stream, FW_ClassTypeConstant type);
  88.     static void Write(FW_CWritableStream& stream, FW_ClassTypeConstant type, const void *object);
  89.  
  90. //----------------------------------------------------------------------------------------
  91. //    Action protocol
  92. //
  93. public:
  94.     virtual void Internalize(Environment* ev, ODStorageUnit* storage);
  95.     virtual void Externalize(Environment* ev, ODStorageUnit* storage);
  96.     virtual void DoIt();
  97.  
  98. //----------------------------------------------------------------------------------------
  99. //    Private implementation
  100. //
  101. private:
  102. #if 0
  103.     void InternalizeSound(Environment* ev, ODStorageUnit* storage);
  104. #endif
  105.     void InternalizeSoundFile(Environment* ev, ODStorageUnit* storage);
  106.     void InternalizeFromStream(Environment* ev, FW_CReadableStream& stream);
  107.  
  108.     void ExternalizeToStream(Environment* ev, FW_CWritableStream& stream);
  109.  
  110.     Handle fSoundHandle;
  111. };
  112.  
  113. //========================================================================================
  114. //    class CScriptAction
  115. //========================================================================================
  116.  
  117. class CScriptAction : public CAction
  118. {
  119. public:
  120.     FW_DECLARE_CLASS
  121.  
  122. public:    
  123. //----------------------------------------------------------------------------------------
  124. //    Initialization/Destruction
  125. //
  126.     CScriptAction(Environment* ev, ODStorageUnit* storage);
  127.     CScriptAction(Environment* ev, FW_CReadableStream& stream);
  128.     virtual ~CScriptAction();
  129.     
  130.     static FW_Boolean IsInStorage(
  131.                         Environment* ev, 
  132.                         ODStorageUnit* storage);
  133.     
  134. //----------------------------------------------------------------------------------------
  135. //    Archiving
  136. //
  137. public:
  138.     static void*        Read(FW_CReadableStream& stream, FW_ClassTypeConstant type);
  139.     static void         Write(FW_CWritableStream& stream, FW_ClassTypeConstant type, const void *object);
  140.  
  141. //----------------------------------------------------------------------------------------
  142. //    Action protocol
  143. //
  144. public:
  145.     virtual void Internalize(Environment* ev, 
  146.                         ODStorageUnit* storage);
  147.     virtual void Externalize(Environment* ev, 
  148.                         ODStorageUnit* storage);
  149.     
  150.     virtual void DoIt();
  151.  
  152. //----------------------------------------------------------------------------------------
  153. //    Private implementation
  154. //
  155. private:
  156. #if 0
  157.     void InternalizeScript(Environment* ev ODStorageUnit* storage);
  158. #endif
  159.     void InternalizeScriptFile(Environment* ev, ODStorageUnit* storageUnit);
  160.     void InternalizeFromStream(Environment* ev, FW_CReadableStream& stream);
  161.  
  162.     void ExternalizeToStream(Environment* ev, FW_CWritableStream& stream);
  163.     
  164.     inline ComponentInstance GetScriptingComponent();
  165.     inline void ReleaseScriptingComponent();
  166.  
  167.     void LoadAndExecuteScript(Handle scriptData);
  168.  
  169.     Handle fScriptHandle;
  170.     
  171.     static ComponentInstance fgComponentInstance;
  172. };
  173.  
  174. #endif
  175.  
  176. //----------------------------------------------------------------------------------------
  177. // CScriptAction::GetScriptingComponent
  178. //----------------------------------------------------------------------------------------
  179.  
  180. inline ComponentInstance CScriptAction::GetScriptingComponent()
  181. {
  182.     if (!fgComponentInstance)
  183.         fgComponentInstance = ::OpenDefaultComponent(kOSAComponentType, kOSAGenericScriptingComponentSubtype);
  184.     
  185.     return fgComponentInstance;
  186. }
  187.  
  188. //----------------------------------------------------------------------------------------
  189. // CScriptAction::ReleaseScriptingComponent
  190. //----------------------------------------------------------------------------------------
  191.  
  192. inline void CScriptAction::ReleaseScriptingComponent()
  193. {
  194.     if (fgComponentInstance)
  195.     {
  196.         CloseComponent(fgComponentInstance);
  197.         fgComponentInstance = NULL;
  198.     }
  199. }